#include "init.h"

// 定义了一个函数指针数据组，数组内每个元素其实都是一个函数指针
static INIT initfunc[] = {
    systick_Init,
    myI2cInit,
    uart_init,
    OLED_Init,
    
    0};

void device_init(void)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    INIT *pfunc = initfunc; // pfunc指针，类型是INIT *，返回的值是INIT类型，而数组initfunc的元素就是INIT类型
    // 简单看成 initfunc就是int a[],INIT *pfunc即是int *p,  INIT *pfunc=initfunc就是int *p=a;
    while (*pfunc)
    {
        (*pfunc)(); // 这里的*pfunc 中的星号是解指针的意思，例如当pfunc指向initfunc中的ledinit，*pfunc，相当于调用ledinit
        pfunc++;
    }
    uart_printf("!!!hard device inited\r\n");
}
